package com.edu.exam.enums.grading;

import com.edu.exam.enums.core.BaseEnum;

import java.util.Arrays;

/**
 * 录入来源枚举
 *
 * 定义成绩数据的录入来源
 *
 * @author System
 * @version 1.0.0
 */
public enum EntrySource implements BaseEnum {

    /** 手动录入 */
    MANUAL("MANUAL", "手动录入"),

    /** 网页录入 */
    WEB("WEB", "网页录入"),

    /** 在线录入 */
    ONLINE("ONLINE", "在线录入"),

    /** 批量导入 */
    BATCH_IMPORT("BATCH_IMPORT", "批量导入"),

    /** 文件导入 */
    FILE_IMPORT("FILE_IMPORT", "文件导入"),

    /** 数据同步 */
    DATA_SYNC("DATA_SYNC", "数据同步"),

    /** 系统计算 */
    SYSTEM_CALCULATION("SYSTEM_CALCULATION", "系统计算"),

    /** 外部系统 */
    EXTERNAL_SYSTEM("EXTERNAL_SYSTEM", "外部系统"),

    /** 自动采集 */
    AUTO_COLLECTION("AUTO_COLLECTION", "自动采集"),

    /** 接口录入 */
    API_ENTRY("API_ENTRY", "接口录入"),

    /** 扫描识别 */
    SCAN_RECOGNITION("SCAN_RECOGNITION", "扫描识别"),

    /** 语音转文字 */
    VOICE_TO_TEXT("VOICE_TO_TEXT", "语音转文字"),

    /** 拍照上传 */
    PHOTO_UPLOAD("PHOTO_UPLOAD", "拍照上传"),

    /** 移动端录入 */
    MOBILE_ENTRY("MOBILE_ENTRY", "移动端录入");

    private final String code;
    private final String description;

    EntrySource(String code, String description) {
        this.code = code;
        this.description = description;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getDescription() {
        return description;
    }

    public static EntrySource fromCode(String code) {
        return Arrays.stream(values())
                .filter(e -> e.getCode().equals(code))
                .findFirst()
                .orElseThrow(() -> new IllegalArgumentException("Unknown entry source code: " + code));
    }
    @Override
    public String toString() {
        return description;
    }
}